Method of extension of storage capacity and storage system using the method

ABSTRACT

Provided are a storage system and a method of controlling a storage system in which respective real storage areas of a plurality of disk drives contained in the storage system contain management units, and a control device of the storage system assigns a real storage area of a plurality of first disk drives to the virtual storage area, distributedly stores the data in the plurality of management units of the assigned real storage area, distributedly stores, upon receiving a request for adding a second disk drive, the data stored in the plurality of management units of the plurality of first disk drives in the plurality of management units of the plurality of first disk drives and the second disk drive, and assigns the real storage area of the plurality of first disk drives and the second disk drive to an unused virtual storage area.

CROSS REFERENCE TO PRIOR APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.12/149,582, filed May 5, 2008, which claims the benefit of JapanesePatent Application Number 2008-073605, filed Mar. 31, 2008, each ofwhich is incorporated by reference as if fully set forth herein.

BACKGROUND

A technology disclosed herein relates to management of a storage system,and more particularly, to an extension of a storage capacity of astorage system.

Conventionally, in order to securely store data used by companies andthe like, storage systems configured into the redundant array ofinexpensive disks (RAID) are widely used. The quantity of the datastored in these storage systems is explosively increasing, and it isthus necessary to extend the storage capacity of the storage system byadding disk drives. Generally, disk drives are added for respective RAIDgroups. For example, if the RAID level 5 that has a configuration of 3D(data)+1P (parity) is applied, four disk drives constitute one RAIDgroup. In this case, in order to carry out an addition of disk drivesonce, at least four disk drives are necessary.

JP 07-141121 A discloses a technology for extending a storage capacityby extending a data width of a RAID group. According to this technology,when the RAID level 5 having the 3D+1P configuration is applied, byadding one disk drive to the RAID group, the configuration thereof ischanged to 4D+1P. As a result, it is possible to add one disk drive at atime, and an extension of the storage capacity with the minimumnecessary cost is thus realized.

SUMMARY

According to the technology described in JP 07-141121 A, in order tochange the configuration of the RAID, it is necessary to relocate alldata in the RAID group. As a result, until the relocation of the data iscompleted, it is not possible to use the extended storage capacity.

According to a representative invention disclosed in this application,there is provided a storage system comprising: a plurality of diskdrives; and a control device for controlling the plurality of diskdrives, the storage system being coupled to a host computer, wherein:the plurality of disk drives comprise a plurality of first disk drivesand one second disk drive; the plurality of disk drives comprise aplurality of real storage areas; each of the plurality of real storageareas comprises a plurality of management units of a predetermine size;and the control device is configured to: hold information indicatingcorrespondences between a plurality of virtual storage areas to beprovided for the host computer and the plurality of real storage areasassigned to the plurality of virtual storage areas; assign, uponreceiving a request for writing data to a virtual storage area to whicha real storage area is not assigned, a real storage area, which is notassigned to a virtual storage area, of the plurality of real storageareas containing the plurality of management units of the plurality offirst disk drives to the virtual storage area designated by the requestfor writing data; distributedly store the data requested to be writtenin the plurality of management units contained in the assigned realstorage area; read, upon receiving a request for adding the second diskdrive, the data stored in the plurality of management units of theplurality of first disk drives, and distributedly store the read data inthe plurality of management units of the plurality of first disk drivesand the second disk drive to relocate the data; and assign, uponreceiving a request for writing data to a virtual storage area to whicha real storage area is not assigned, after receiving the request foradding the second disk drive, and before the relocation of the data hasbeen completed, a real storage area, which is not assigned to a virtualstorage area, of the plurality of real storage areas containing theplurality of management units of the plurality of first disk drives andthe second disk drive to the virtual storage area designated by therequest for writing data.

According to an embodiment of this invention, it is possible to extendthe storage capacity while a cost for adding disk drive is minimized.Moreover, according to the embodiment of this invention, it is possibleto use an extended storage capacity immediately after the addition ofthe disk drive.

BRIEF DESCRIPTION OF THE DRAWING(S)

FIG. 1 is a block diagram showing a configuration of a computer systemaccording to an embodiment of this invention.

FIG. 2 is a block diagram showing a configuration of a managementterminal according to the embodiment of this invention.

FIGS. 3A to 3C and 4A to 4C describe an overview of steps of a capacityextension process carried out in the computer system according to theembodiment of this invention.

FIG. 5 describes a RG table according to the embodiment of thisinvention.

FIG. 6 describes a real LU table according to the embodiment of thisinvention.

FIG. 7 describes a pool table according to the embodiment of thisinvention.

FIG. 8 describes a TP LU table according to the embodiment of thisinvention.

FIG. 9 describes a mapping table according to the embodiment of thisinvention.

FIG. 10 describes the changed real LU table according to the embodimentof this invention.

FIG. 11 describes the changed pool table according to the embodiment ofthis invention.

FIG. 12 describes a capacity extension screen according to theembodiment of this invention.

FIGS. 13 and 14 are flowcharts showing the capacity extension processcarried out according to the embodiment of this invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Hereinafter, a description will be given of an embodiment of thisinvention with reference to drawings.

FIG. 1 is a block diagram showing a configuration of a computer systemaccording to the embodiment of this invention.

The computer system according to this embodiment includes a storagesystem 101, at least one host 102, and a management terminal 103. The atleast one host 102 is coupled to the storage system 101 via a storagearea network (SAN) 104. The management terminal 103 is coupled to thestorage system 101 via a management network 105.

The storage system 101 includes a control device 110 and a plurality ofhard disk drives (HDD's) 118.

The control device 110 includes a CPU 111, a main memory 112, a cachememory 113, a non-volatile memory 114, at least one host interface (IF)115, at least one disk interface (IF) 119, and a management interface(IF) 116, which are coupled each other.

The CPU 111 is a processor for executing programs stored in thenon-volatile memory 114. In the following description, processesexecuted by the programs stored in the non-volatile memory 114 areactually executed by the CPU 111.

The main memory 112 stores programs executed by the CPU 111, and datareferred by the CPU 111. For example, a copy of at least a part of theprograms and the like stored in the non-volatile memory 114 may bestored in the main memory 112 depending on necessity.

The cache memory 113 temporarily stores at least one of data to bewritten to the HDD's 118 and data read from the HDD's 118.

The main memory 112 and the cache memory 113 may be a semiconductormemory such as a dynamic random access memory (DRAM).

The non-volatile memory 114 stores programs executed by the CPU 111, anddata referred by the CPU 111. The non-volatile memory 114 according tothis embodiment stores at least a management terminal communicationprogram 121, a thin provisioning (TP) program 122, a RAID group (RG)extension program 123, a logical volume (LU) size change program 124, acapacity extension program 125, a RG table 126, a real LU table 127, apool table 128, a TP LU table 129, and a mapping table 130. A detaileddescription will later be given of these programs and tables. Thenon-volatile memory 114 may be a hard disk drive or a flash memory, forexample.

The HDD's 118 store data written by the host 102. The HDD's 118according to this embodiment constitute a RAID. When the control device110 receives a request for writing data from the host 102, the controldevice 110 generates a parity based on requested data, and stores thedata and the parity in the plurality of HDD's 118. The plurality ofHDD's 118 storing data and parities generated based on the dataconstitute the RAID group.

The host IF 115 is coupled to the host 102 via the SAN 104, andcommunicates with the host 102 according to a predetermined protocol(such as the Fibre Channel protocol). The disk IF 119 is coupled to theHDD's 118, and communicates with the HDD's 118 according to apredetermined protocol (such as the Fibre Channel protocol).

The management IF 116 is coupled to the management terminal 103 via themanagement network 105, and communicates with the management terminal103 according to a predetermined protocol.

The SAN 104 and the management network 105 may be any type of network.Typically, the SAN 104 may be a high-speed network applied to the FiberChannel protocol and dedicated to an external storage device, and themanagement network 105 may be a so-called local area network (LAN).

The host 102 is a computer which transmits a request for writing dataand a data read request to the storage system 101. The host 102 mayinclude a CPU (not shown), a memory (not shown), and an interface (notshown), coupled with each other. The CPU executes an application program(not shown) stored in the memory, and transmits the request for writingdata and the data read request via the interface depending on necessity,for example.

The management terminal 103 is a computer for managing the storagesystem 101.

FIG. 2 is a block diagram showing a configuration of the managementterminal 103 according to the embodiment of this invention.

The management terminal 103 according to this embodiment includes a CPU201, a main memory 202, an HDD 203, a pointing device 204, an inputdevice 205, an output device 206, and a management IF 207.

The CPU 201 is a processor for executing programs stored in the HDD 203.

The main memory 202 stores programs executed by the CPU 201, and datareferred by the CPU 201. For example, a copy of at least a part of theprograms stored in the HDD 203 may be stored in the main memory 202depending on necessity.

The HDD 203 stores programs executed by the CPU 201. The HDD 203according to this embodiment stores at least a user interface (UI)control program 211 and a storage communication program 212. The HDD 203may be replaced by a non-volatile memory such as a flash memory.

The pointing device 204 is a mouse, for example, and the input device205 is a keyboard, for example. The pointing device 204 and the inputdevice 205 are used to receive an input from a user via a userinterface.

The output device 206 is an image display device such as a liquidcrystal screen. The output device 206 displays a screen for realizing auser interface described later.

The management IF 207 is coupled to the storage system 101 via themanagement network 105, and communicates with the storage system 101according to a predetermined protocol.

FIGS. 3A to 3C and 4A to 4C describe an overview of steps of a capacityextension process carried out in the computer system according to theembodiment of this invention.

HDD's 118A to 118E in FIGS. 3A to 3C and 4A to 4C respectivelycorrespond to any one of the plurality of HDD's 118. Illustrated “H04”to “H08” are respectively identifiers of the HDD's 118A to 118E. In thefollowing description, the HDD's 118A to 118E are also respectivelydescribed as H04 to H08.

FIG. 3A shows an example in which the RAID level 5 having theconfiguration of so-called 3D (data)+1P (parity) is applied. The HDD's118A to 118D constitute one RAID group.

When the RAID level 5 is applied, data requested to be written is storedin a so-called stripe set across storage areas of the plurality of HDD's118. Storage areas of the respective HDD's 118 constituting one stripeis also referred to as stripe unit. Each stripe unit is a managementunit for the storage area having a predetermined size (such as 64kilobytes (kB)).

For example, for the configuration of 3D+1P, respective stripes are setacross the four HDD's 118 (such as HDD's 118A to 118D). In this case,one stripe contains four stripe units. These four stripe units arerespectively contained in the HDD's 118A to 118D.

Data requested to be written is distributedly stored in the stripe unitsof the HDD's 118A to 118D. Specifically, the data is divided into thesize of the stripe unit. Then, the three of the divided data aresequentially stored in three stripe units of one stripe. In theremaining one stripe unit, a parity generated from the data stored inthe other three stripe units is stored. The rest of the data issequentially stored in stripes in the same manner.

It should be noted that this embodiment shows an example in which thesize of the stripe unit is 64 kB.

A real logical volume (LU) 302A is recognized as a logical storagesystem by the host 102. In FIG. 3A, the real LU 302A contains storageareas of the four HDD's 118 H04 to H07. In other words, the real LU 302Acontains at least one stripe set across the four HDD's 118 H04 to H07.Illustrated “R02” is an identifier of the real LU 302A. In the followingdescription, the real LU 302A is also described as R02.

A thin provisioning LU (TP LU) 301 is a virtual logical volume providedby the TP program 122 for the host 102. When the TP LU 301 is created,the size, namely the storage capacity, thereof is defined, while storageareas of the HDD's 118 are not assigned to the TP LU 301. Then, when theTP program 122 receives a request for writing data to the TP LU 301 fromthe host 102, the TP program 122 assigns a storage area to store therequested data to the TP LU 301. On this occasion, the TP program 122newly assigns a storage area, which has not been assigned to the TP LU301, of the storage areas (namely, the real storage areas) of the realLU 302A to the TP LU 301. The requested data is stored in the storagearea assigned to the TP LU 301.

The storage areas of the real LU 302A are respectively assigned to theTP LU 301 for storage areas of a predetermined size referred to as page.FIG. 3A shows an example in which a page 312A of the real LU 302A isassigned to a page 311A of the TP LU 301, and a page 312B of the real LU302A is assigned to a page 311B of the TP LU 301. The pages 311A and311B are virtual storage areas of the TP LU 301, and the pages 312A and312B are real storage areas of the real LU 302A.

Each page contains at least one stripe. For example, when the size of apage is 32 megabytes (MB), and the size of the stripe unit is 64 kB, onepage contains a plurality of stripes constructed of 512 stripe units. Inthis case, data stored in a page of a real LU assigned to the TP LU 301is actually stored in at least one stripe contained in this page. Inother words, data stored in the respective pages is distributedly storedin a plurality of stripe units contained in the plurality of HDD's (suchas HDD's 118A to 118D).

In the example shown in FIG. 3A, a hatched portion of the real LU 302Aindicates a storage area which has already been assigned to the TP LU301.

A pool 303 is a group of at least one real LU 302 for providing storageareas to be assigned to the TP LU 301. In the example shown in FIG. 3A,the pool 303 contains only one real LU 302A. Illustrated “P00” is anidentifier of the pool 303. In the following description, the pool 303is also described as P00.

When the TP program 122 receives a request for writing data to a storagearea of the TP LU 301 to which a storage area of a real LU 302 has notbeen assigned, the TP program 122 selects a page which has not beenassigned to the TP LU 301 in the real LU 302A contained in the pool 303corresponding to the TP LU 301, and newly assigns this page to the TP LU301. The data requested to be written is stored in the assigned page ofthe real LU 302A.

According to this embodiment, while at least one real LU is defined as apool, at least one RAID group may be defined as a pool.

As the size of the TP LU 301, a size larger than the size of the pool303 corresponding thereto may be defined. Alternatively, a plurality ofTP LU's may be assigned to one pool 303. In this case, the storagecapacity of the pool 303 may become insufficient in the future. In orderto solve the deficiency of the storage capacity, in the example shown inFIG. 3A, an HDD 118E is added. Specifically, for example, if a ratio ofthe pages which have already been assigned to the TP LU 301 to the pagescontained in the pool 303 exceeds a predetermined threshold, the HDD118E may be added.

When the HDD 118E is to be added, the LU size change program 124 reducesthe size of the real LU 302A to the size of a storage area which hasalready been assigned to the TP LU 301, namely, the size of a hatchedstorage area as shown in FIG. 3B.

Then, the capacity extension program 125 generates a new real LU 302B,and adds the new real LU 302B to the pool 303 as shown in FIG. 3C. Thereal LU 302B contains free storage areas of the HDD's 118A to 118Dgenerated by the size reduction in FIG. 3B, and a storage area of theHDD 118E corresponding to these free storage areas. These storage areasnewly constitute the configuration of 4D+1P of the RAID level 5. On thisoccasion, an area which is not contained in the real LU 302B of thestorage area of the added HDD 118E is a free area which does not storedata nor parities of the real LU 302A.

Then, the RG extension program 123 starts data width extension of thereal LU 302A as shown in FIG. 4A. On this occasion, the data widthextension is a process of extending the width of the stripe (namely, thenumber of stripe units constituting one stripe). In the example shown inFIG. 4A, the data width extension implies, in order to newly apply theconfiguration of 4D+1P to the real LU 302A to which the configuration of3D+1P has been applied, a relocation of data read from the storage areasof the HDD's 118A to 118D corresponding to the real LU 302A to the HDD's118A to 118E. This relocation may be realized by a well-known methodsuch as a method described in JP 07-141121 A.

After the real LU 302B has been created, before the data width extensionof the real LU 302A has been completed, if it is necessary to newlyassign a page to the TP LU 301, a page of the real LU 302B is assignedto the TP LU 301. For example, if data is written to a storage area of apage 311C of the TP LU 301 to which a storage area of the real LU 302has not been assigned, the TP program 122 newly assigns a page 312C inthe real LU 302B to the page 311C.

As a result of the data width extension, data in the real LU 302A readfrom the HDD's 118A to 118D is distributedly stored in the HDD's 118A to118E. Consequently, the free space of the HDD 118E at a time point shownin FIG. 3C reduces, and a free space (namely free stripes) correspondingto the reduced free space newly appears in the HDD's 118A to 118D asshown in FIG. 4B.

Then, the LU size change program 124 extends, by newly adding freestripes which are not contained in either of the real LU's 302 to thereal LU 302A, the size of the real LU 302A as shown in FIG. 4C.

Hereinafter, a detailed description will be given of the steps in FIGS.3A to 3C and 4A to 4C with reference to tables and flowcharts.

FIG. 5 describes the RG table 126 according to the embodiment of thisinvention.

The RG table 126 contains information indicating a configuration and astatus of the respective RAID groups. Specifically, the RG table 126includes RG ID's 501, HDD ID lists 502, RAID levels 503, statuses 504,and added HDD ID lists 505.

As the RG ID 501, the identifier of each RAID group created in thestorage system 101 is registered.

As the HDD ID list 502, a list of identifiers of the HDD's 118 containedin each RAID group is registered.

As the RAID level 503, a RAID level applied to each RAID group isregistered. For example, as the RAID level 503, “RAID 5” indicating theRAID level 5 is registered.

As the status 504, information indicating a status of each RAID group isregistered. The information indicating the status of each RAID groupincludes “NORMAL” and “UNDER EXTENSION”. “NORMAL” indicates that a RAIDgroup is normally operating. (Namely, it is possible to write and readdata to and from this RAID group.) “UNDER EXTENSION” indicates that theHDD 118 is added to the RAID group, and the capacity extension processshown in FIGS. 3A to 3C and 4A to 4C is being carried out.

As the added HDD ID list 505, a list of identifiers of the HDD's 118newly added to each RAID group is registered.

In the example shown in FIG. 5, to the HDD ID list 502, the RAID level503, the status 504, and the added HDD ID list 505 corresponding to avalue “RG01” of the RG ID 501, “H04, H05, H06, HO7”, “RAID 5”, “UNDEREXTENSION”, and “H08” are respectively registered. This entry indicatesthat, as shown in FIG. 3A, the RAID level of the RAID group “RG 02”constituted by the HDD “H04” 118A to the HDD “H07” 118D is “5”, the HDD“H08” 118E is newly added to the RAID group, and the capacity extensionprocess is being carried out.

FIG. 6 describes the real LU table 127 according to the embodiment ofthis invention.

The real LU table 127 contains information indicating a configuration ofthe respective real LU's 302. Specifically, the real LU table 127contains real LU ID's 601, RG ID's 602, start stripe numbers 603, andsizes 604.

As a real LU ID 601, the identifier of each real LU 302 is registered.

As an RG ID 602, the identifier of a RAID group containing each LU 302is registered.

As a start stripe number 603, a number assigned to a stripe located atthe beginning of a storage area assigned to each real LU 302 isregistered.

As a size 604, the size of each real LU 302 (namely, the data storagecapacity) is registered. When a RAID is constructed, as a size 604, astorage capacity of a storable user data (namely data except forparities) is registered.

In the example shown in FIG. 6, to an RG ID 602, a start stripe number603, and a size 604 corresponding to a value “R02” of a real LU ID 601,“RG01”, “0”, and “900 GB” are respectively registered. This entryindicates that, as shown in FIG. 3A, the real LU “R02” 302A correspondsto a storage area of 900 gigabytes (GB) starting from a start stripe(namely, a stripe bearing a number “0”) of the RAID group “RG01” asshown in FIG. 5.

It should be noted that FIG. 3A shows an example in which the storagecapacity of the respective HDD's 118 is 300 GB. In this case, the totalof the storage capacities of the four HDD's 118 is 1200 GB. However, forthe configuration of 3D+1P, parities are stored in ¼ of the capacity,the capacity for data is 900 GB.

FIG. 7 describes the pool table 128 according to the embodiment of thisinvention.

The pool table 128 contains information indicating a status of the pools303. Specifically, the pool table 128 contains pool ID's 701, real LUID's 702, assigned last page numbers 703, and statuses 704.

As a pool ID 701, the identifier of each pool 303 is registered.

As a real LU ID 702, the identifier of a real LU 302 contained in eachpool 303 is registered.

As an assigned last page number 703, the number of the last page whichhas been assigned to a TP LU of pages of a real LU 302 contained in eachpool 303 is registered. It should be noted that, according to thisembodiment, pages of a real LU 302 are assigned to a TP LU in the orderof the assigned page number. Therefore, all pages, to which numbersbefore a number registered as the assigned last page number 703 havebeen assigned, have been assigned to the TP LU, and all pages, to whichnumbers after the number registered as the assigned last page number 703have been assigned, have not yet been assigned to the TP LU.

As a status 704, information indicating a status of each real LU 302 isregistered. The information indicating the status of each real LU 302includes “NORMAL”, and “ASSIGNMENT NOT ALLOWED”. “NORMAL” indicates astatus in which the real LU 302 is normally operating. In this status, apage in the real LU 302 can be newly assigned to a TP LU. “ASSIGNMENTNOT ALLOWED” indicates a status in which a page in the real LU 302cannot be newly assigned to a TP LU.

In the example shown in FIG. 7, to a real LU ID 702, an assigned lastpage number 703, a status 704 corresponding to a value “P00” of a poolID 701, “R02”, “19200”, and “NORMAL” are respectively registered. Thisentry indicates that, as shown in FIG. 3A, the pool “P00” 303 containsthe real LU “R02” 302A, pages from the start page to the page 19200 ofthe real LU “R02” 302A have already been assigned to a TP LU 301 (inother words, page subsequent to the 19200 page have not been assigned tothe TP LU 301 yet), and pages of the real LU “R02” 302A can be newlyassigned to the TP LU 301.

It should be noted that this embodiment shows an example in which thesize of the page size is 32 megabytes (MB). In this case, 19200 pagescorrespond to 600 GB. As shown in FIG. 6, the size of the real LU “R02”302A is 900 GB. Therefore, the example shown in FIG. 7 shows that twothirds of the storage area of the real LU “R02” 302A has already beenassigned to the TP LU 301, and the rest of one third has not beenassigned.

FIG. 8 describes the TP LU table 129 according to the embodiment of thisinvention.

The TP LU table 129 contains information indicating a configuration ofthe respective TP LU's. Specifically, the TP LU table 129 contains TP LUID's 801, sizes 802, and pool ID's 803.

As a TP LU ID 801, an identifier of each TP LU is registered.

As a size 802, a size defined for each TP LU (namely storage capacity)is registered.

As a pool ID 803, the identifier of a pool 303 corresponding to each TPLU is registered. A pool 303 corresponding to a TP LU implies a pool 303which supplies the TP LU with pages which can be assigned to the TP LU.

In the example shown in FIG. 8, to a size 802 and a pool ID 803corresponding to a value “T00” of a TP LU ID 801, “240 GB” and “P00” arerespectively registered. This entry indicates that the storage capacityof a TP LU identified by “T00”(such as TP LU 301) is defined as 240 GB,and a pool “P00” 303 corresponds to this TP LU. In other words, in thiscase, a page (such as page 312A) of the pool “P00” 303 can be assignedto the TP LU 301.

Further, in the example shown in FIG. 8, as all pool ID's 803corresponding to values “T00”, “T01”, and “T02” of TP LU ID's 801, “P00”is registered. This means that the pool “P00” 303 corresponds torespective three TP LU's identified by “T00”, “T01”, and “T02”, in otherwords, respective pages of the pool “P00” 303 can be assigned to any oneof the three TP LU's.

FIG. 9 describes the mapping table 130 according to the embodiment ofthis invention.

The mapping table 130 contains information indicating correspondencesbetween a page of a TP LU and a page of a real LU 302 assigned thereto.Specifically, the mapping table 130 contains TP LU ID's 901, TP pagenumbers 902, real LU ID's 903, and real page numbers 904.

As a TP LU ID 901, an identifier of a TP LU is registered.

As a TP page number 902, a number of a page in a TP LU is registered.

As a real LU ID 903, the identifier of a real LU 302 is registered.

As a real page number 904, a number of a page in a real LU 302 isregistered.

In an example shown in FIG. 9, to a TP LU ID 901, a TP page number 902,a real LU ID 903, and a real page number 904 of a top entry (namely row)of the mapping table 130, “T00”, “TP00”, “R00”, and “RP00” arerespectively registered. This entry indicates that, to the page to whichthe number “TP00” is assigned of the TP LU identified by “T00”, the pageto which the number “RP00” is assigned of the real LU 302 identified by“R00” is assigned.

When, to a page of the TP LU, a page of a real LU 302 has not beenassigned yet, as the real LU ID 903 and the real page number 904corresponding to this page, “null” is registered.

Some of values in the above-mentioned tables are changed as the processshown in FIGS. 3A to 3C and 4A to 4C progresses. A description will nowbe given of examples of changed tables with reference to FIGS. 10 and11.

FIG. 10 describes the changed real LU table 127 according to theembodiment of this invention.

Specifically, the real LU table 127 shown in FIG. 10 is changedreflecting a fact that the size of the real LU 302A is reduced as shownin FIG. 3B, and the new real LU 302B is added as shown in FIG. 3C.

A description will now be given of points in which FIG. 10 is differentfrom FIG. 6.

In the real LU table 127 shown in FIG. 10, the value of the size 604corresponding to the value “R02” of the real LU ID 601 is changed to“600 GB”. As shown in FIG. 7, at a time point shown in FIG. 3A, of thestorage area of 900 GB of the real LU “R02” 302A, the storage areacorresponding to 600 GB has been assigned to the TP LU 301. Therefore,in a step shown in FIG. 3B, the size of the real LU “R02” 302A isreduced to 600 GB. This reduction, as shown in FIG. 10, is carried outby changing the value of the size 604 from “900 GB” to “600 GB”.

It should be noted that, as described before, the size of one stripeunit according to this embodiment is 64 kB. Therefore, in the case ofthe configuration of 3D+1P, the number of the stripes required forstoring data of 600 GB and parities generated therefrom is 3276800.

Moreover, a new entry is added to the real LU table 127 shown in FIG.10. As a real LU ID 601, an RG ID 602, a start stripe number 603, and asize 604 of the added entry, “R03”, “RG01”, “3276800”, and “400 GB” arerespectively registered. This entry corresponds to the real LU “R03”302B newly added in FIG. 3C. This indicates that the real LU “R03” 302Bcorresponds to a storage area of 400 GB starting from a stripe of theRAID group “RG01” to which a number “3276800” is assigned (namely a3276801st stripe) as shown in FIG. 5.

It should be noted that stripes starting from the 3276801st stripe areset across the five HDD's 118 including the added HDD 118E. As a result,these respective stripes contain five stripe units.

When the storage capacity of the respective HDD's 118 is 300 GB, and thesize of the respective stripe units is 64 kB, the total number of thestripes set to the RAID group constituted by these HDD's 118 is 4915200.If the configuration of 4D+1P is applied to these stripes, the storagecapacity of data from the 3276801st stripe to the last stripe is 400 GB.

FIG. 10 shows the real LU table 127 when the step shown in FIG. 3C hasbeen completed, and then, in the step shown in FIG. 4C, the value of thesize 604 corresponding to the real LU “R02” 302A is changed to “800 GB”.This change will be described later with reference to FIG. 14.

FIG. 11 describes the changed pool table 128 according to the embodimentof this invention.

Specifically, the pool table 128 shown in FIG. 11 has been changedreflecting a fact that the new real LU 302B is added as shown in FIG.3C, and a fact that an assignment from the real LU 302A is not allowedas shown in FIG. 4A Hereinafter, a description will be given of pointsin which FIG. 11 is different from FIG. 7.

In the pool table 128 shown in FIG. 11, the value of the status 704corresponding to the value “R02” of the real LU ID 702 is changed to“ASSIGNMENT NOT ALLOWED”. This indicates that, as described referring toFIG. 4A, an assignment of a page from the real LU “R02” 302A to the TPLU 301 is not allowed.

Moreover, a new entry is added to the pool table 128 shown in FIG. 11.As a pool ID 701, a real LU ID 702, an assigned last page number 703,and a status 704 of the added entry, “P00”, “R03”, “N/A”, and “NORMAL”are respectively registered. This entry corresponds to the real LU “R03”302B which is newly created in FIG. 3C. This indicates that the pool“P00” 303 contains the real LU “R03” 302B, any pages of the real LU“R03” 302B have not been assigned to the TP LU 301 yet, and the pages ofthe real LU “R03” 302B can be newly assigned to the TP LU 301.

FIG. 12 describes a capacity extension screen according to theembodiment of this invention.

The capacity extension screen 1200 shown in FIG. 12 is displayed on theoutput device 206 of the management terminal 103 to provide a graphicaluser interface for the administrator. The administrator can instruct, byreferring to and operating on the capacity extension screen 1200, thestorage system 101 to execute the capacity extension process.

The capacity extension screen 1200 includes a data width extensionsubject RAID group display section 1201, an addition subject HDD displaysection 1202, an extension start button 1203, and a cancel button 1204.

The data width extension subject RAID group display section 1201displays the identifiers of the RAID groups constructed in the storagesystem 101. The administrator can select, based on the displayedidentifiers, an identifier of a RAID group to be extended.

The addition subject HDD display section 1202 displays identifiers ofHDD's 118 which are not contained in any of the RAID groups, of theHDD's 118 provided for the storage system 101. The administrator canselect, based on the displayed identifiers, an HDD 118 to be added to aRAID group for the capacity extension.

When the administrator selects the identifier of a RAID group to beextended, and an HDD 118 to be added, and then, operates the extensionstart button 1203, the capacity extension process starts, which iscarried out by adding the selected HDD 118 to the selected RAID group.

For example, when the administrator selects “RG01” from the data widthextension subject RAID group display section 1201, selects “H08” fromthe addition subject HDD display section 1202, and operates theextension start button 1203, an instruction to start the process tonewly add the HDD “H08” 118E to the RAID group “RG01” containing the HDD“H04” 118A to the HDD “HO7” 118D is transmitted from the managementterminal 103 to the storage system 101. The storage system 101,according to the received instruction, starts the capacity extensionprocess as shown in FIGS. 3A to 3C, 4A to 4C, 13, and 14.

On the other hand, when the administrator operates the cancel button1204, the selections carried out in the data width extension subjectRAID group display section 1201 and the addition subject HDD displaysection 1202 are cancelled.

It should be noted that the above-mentioned selections and buttonoperations may be carried out by the administrator using the pointingdevice 204.

While FIG. 12 shows an example in which the administrator selects a RAIDgroup the capacity of which is to be extended, the administrator mayselect a TP LU 301 or pool 303 the capacity of which is to be extended.In this case, the data width extension subject RAID group displaysection 1201 may display identifiers of TP LU's 301 or pools 303 whichcan be selected.

FIGS. 13 and 14 are flowcharts showing the capacity extension processcarried out according to the embodiment of this invention.

As described with reference to FIG. 12, when the administrator selectsthe identifier of a RAID group to be extended and the identifier of anHDD 118 to be added, and instructs execution of the capacity extensionprocess, the capacity extension process starts in the storage system101. In the following description, the RAID group and the HDD 118selected by the administrator are respectively referred to as RAID groupof data width extension subject and addition subject HDD.

First, the capacity extension program 125 changes a value of a status504 corresponding to a RAID group of data width extension subject in theRG table 126 to “UNDER EXTENSION”, and adds the identifier of anaddition subject HDD to an added HDD ID list 505 (step 1301). The statusof the RAID group shown in FIG. 3A is a status at a time pointimmediately after the step 1301 has been executed.

Alternatively, when the administrator selects a TP LU 301 to beextended, the capacity extension program 125 refers to the TP LU table129, the pool table 128, and the real LU table 127 to identify a RAIDgroup which provides a storage area to be assigned to the selected TP LU301 as a RAID group of data width extension subject. When theadministrator selects a pool 303 to be extended, the capacity extensionprogram 125 refers to the pool table 128 and the real LU table 127 toidentify a RAID group to which a real LU 302 contained in the selectedpool 303 is set as a RAID group of data width extension subject.

Then, the capacity extension program 125 determines whether the RAIDgroup of data width extension subject contains a real LU 301 containedin the pool 303 (step 1302). Specifically, the capacity extensionprogram 125 determines whether the identifier of at least one real LU302 contained in the RAID group of data width extension subject isregistered as a real LU ID 702 in the pool table 128.

If the capacity extension program 125 determines that the RAID group ofdata width extension subject does not contain a real LU 302 contained inthe pool 303 in the step 1302, any storage area in the RAID group ofdata width extension subject is not to be assigned to a TP LU. In thiscase, because the processes from FIGS. 3A to 3C and 4A to 4C cannot beexecuted, a conventional data width extension process is carried outinstead (step 1308). An example of the conventional data width extensionprocess is described in JP 07-141121 A, for example. When the step 1308has been carried out, the capacity extension process ends.

On the other hand, if the capacity extension program 125 determines thatthe RAID group of data width extension subject contains a real LU 302contained in the pool 303 in the step 1302, the capacity extensionprogram 125 changes the value of a status 704 in the pool table 128corresponding to the real LU 302 contained in the pool 303 to“ASSIGNMENT NOT ALLOWED” (step 1303).

Then, the capacity extension program 125 refers to an assigned last pagenumber 703 of the real LU 302 contained in the pool 303, and calculatesa size of the reduced real LU 302 (more precisely, a size of the real LU302, not yet reduced, after the reduction) (step 1304). Specifically,the total of the size of the all pages from the start page of the realLU 302 to a page registered to the assigned last page number 703 iscalculated as the size of the reduced real LU 302.

Then, the LU size change program 124 reduces the size of the real LU 302to the size calculated in the step 1304 (step 1305). The steps 1304 and1305 correspond to the steps described with reference to FIGS. 3B and10.

Then, the capacity extension program 125 newly creates a real LU 302extending across all HDD's 118 contained in the RAID group of data widthextension subject to add the created real LU to a pool (step 1306). Thiscorresponds to the steps described with reference to FIGS. 3C, 10, and11.

Then, the RG extension program 123 starts the data width extensionprocess of the RAID group of data width extension subject (step 1307).This corresponds to the step described with reference to FIG. 4A.

For example, as shown in FIG. 3A, when one HDD 118 is added to the RAIDgroup containing four HDD's 118, in the step 1307, the data widthextension process starts for the real LU 302A in which the data hasalready stored. In this example, as a result of the addition of the HDD118E, the number of the stripe units constituting one stripe increasesfrom four to five. In this case, the data width extension process newlyapplies the configuration of 4D+1P to the real LU 302A, to which theconfiguration of 3D+1P has been applied.

Specifically, for example, the RG extension program 123 sequentiallyreads data stored in the stripe units from the beginning of the real LU302A. Then, the RG extension program 123 newly calculates a parity basedon the data of four sequentially read stripe units. Then, the RGextension program 123 overwrites the data and parity on one extendedstripe. When the new calculation of the parity and the new relocation ofdata have been carried out for all the data in the real LU 302A, thedata width extension process ends.

While, in the above specific example, the size of the real LU 302A isinitially 900 GB, before the start of the data width extension process,the size is reduced to 600 GB corresponding to the data quantity whichis actually stored. As a result, the number of stripes subject to thedata width extension process is reduced, so time required for the datawidth extension process can thus be reduced.

After the data width extension process starts, the capacity extensionprogram 125 determines whether the data width extension process has beencompleted or not (step 1403). The capacity extension program 125continues the data width extension process until the capacity extensionprogram 125 determines that the data width extension process has beencompleted.

While the data width extension process is being carried out, thecapacity extension program 125 determines whether a request for writingdata to a page, to which a page of a real LU 302 has not been assigned,of the pages of the TP LU 301 has been received (step 1401).

If the capacity extension program 125 determines that a request forwriting data to a page, to which a page of a real LU 302 has not beenassigned, has been received, the TP program 122 assigns a page of thereal LU 302 newly created in the step 1306 to the TP LU 301 (step 1402).This corresponds to the step described with reference to FIG. 4A.

As described later, in the above-mentioned specific example, thecapacity extension process extends the total storage capacity of thereal LU 302A assigned to the TP LU 301 from 900 GB finally to 1200 GB.However, before the completion of the capacity extension process, thestep 1402 can allow the assignment of a storage area of the newlycreated real LU 302B to the TP LU 301.

Immediately before the start of the capacity extension process, thecapacity of the storage area of the real LU 302A which can be newlyassigned to the TP LU 301 is 300 GB, which corresponds to a freecapacity at that time point. On the other hand, when the capacityextension process has been completed, the capacity of the storage areaof the real LU 302A which can be newly assigned to the TP LU 301 isextended to 600 GB, which is a sum of the above-mentioned 300 GB and theadded 300 GB.

However, even before the capacity extension process has been completed,when the real LU 302B has been created in the step 1306, the capacity ofthe storage area of the real LU 302B which can be newly assigned to theTP LU 301 is 400 GB. In this way, according to this embodiment,immediately after the start of the capacity extension process (moreprecisely, after the completion of the creation of the real LU 302B inthe step 1306 even before the completion of the data width extensionprocess), a part of the added storage capacity becomes available.

When the data width extension process has been completed, the capacityextension program 125 calculates an extendable size of the real LU 302reduced in the step 1305 (step 1404). The status of the RAID group afterthe data width extension process is completed as shown in FIG. 4B.

For example, in the case where data of 600 GB is stored in the real LU302A, and where the size of the respective stripe units is 64 kB, whenthe data width extension process applies the configuration of 4D+1P, the2,457,600 stripes from the beginning (namely stripes numbered from “0”to “2,457,599”) store data and parities.

At this time point, the start stripe number of the new real LU “R03”302B is 3,276,800. In other words, at this time point, stripes numberedfrom “2,457,600” to “3,276,799” constitute a free storage area.Therefore, the real LU 302A can be extended so that the stripe numbered“3,276,799” is at an end of the real LU 302A.

The data quantity which can be stored in the 3,276,800 stripes numberedfrom “0” to “3,276,799” is 800 GB. In other words, in theabove-mentioned specific example, in the step 1404, as the extendablesize, 800 GB is calculated.

Then, the LU size change program 124 extends the size of the real LU302A to the size calculated in the step 1404 (step 1405). Specifically,the LU size change program 124 registers the size calculated in the step1404 to the size 604 of the real LU table 127. For example, as describedabove, when 800 GB is calculated as the size of the real LU 302A, the LUsize change program 124 changes the value of the size 604 correspondingto the real LU “R02” 302A to “800 GB”.

As a result, the total of the size of the real LU's 302 assigned to theTP LU 301 is extended from 900 GB as shown in FIG. 6 to 1200 GB (namely800 GB+400 GB).

The calculation of the size in the step 1404 and the extension of thesize in the step 1405 correspond to the step described with reference toFIG. 4C.

Then, the capacity extension program 125 changes the value of the status704 of the pool table 128, which has been changed to “ASSIGNMENT NOTALLOWED” in the step 1303 to “NORMAL” (step 1406).

Then, the capacity extension program 125 changes the value of the status504 of the RG table 126, which has been changed to “UNDER EXTENSION” inthe step 1301 to “NORMAL” (step 1407). Further, the capacity extensionprogram 125 adds the identifier of the HDD 118 registered to the addedHDD ID list 505 corresponding to the extended RAID group to the HDD IDlist 502, and changes the value of the added HDD ID list 505 to “N/A”.

This is the end of the capacity extension process.

The capacity extension process described in FIGS. 13 and 14 can bestarted not only by the instruction of the administrator, but also by adetermination of the control device 110 of the storage system 101. Forexample, if the control device 110 may recognize the ratio of pageswhich have already been assigned to the TP LU 301 of the pages containedin the pool 303, and this ratio exceeds a predetermined threshold, thecontrol device 110 starts the capacity extension process by selecting anarbitrary HDD 118 from free HDD's 118. As a result, the HDD 118 selectedby the control device 110 is added to the RAID group constituting thereal LU's 302 of this pool 303.

According to the above-mentioned embodiment of this invention, as anexample, the RAID group to which the RAID level 5 is applied isdescribed. However, this invention is not limited to the above-mentionedembodiment, and can be applied to a plurality of HDD's 118 to which thestriping is applied. For example, this invention can be applied to theRAID level 0, namely the striping without redundancy for high-speedaccess. When this invention is applied to the RAID level 0, in the datawidth extension process, the relocation of data is carried out whileparities are not calculated.

According to the embodiment of this invention, even if striping isapplied across a plurality of HDD's, it is possible to add HDD's one byone. As a result, it is possible to extend the storage capacity of astorage system with the minimum necessary cost. Moreover, the relocationof data (and recalculation of parities) is carried out only for datastored in real storage areas assigned to a TP LU. As a result, it ispossible to reduce time required for the extension of the storagecapacity. Further, before the relocation of the data is carried out, areal LU containing a storage area of the added HDD is newly created.Thus, even before the completion of the relocation of the data, it ispossible to assign a storage area of the newly created real LU to avirtual LU (namely, a TP LU). Therefore, it is possible to use at leasta part of the added storage area immediately after the addition of theHDD.

While the present invention has been described in detail and pictoriallyin the accompanying drawings, the present invention is not limited tosuch detail but covers various obvious modifications and equivalentarrangements, which fall within the purview of the appended claims.

1. A storage system comprising: a plurality of disk drives; and acontrol device controlling the plurality of disk drives, the storagesystem is coupled to a host computer, wherein: the plurality of diskdrives comprise a plurality of first disk drives and one second diskdrive; the plurality of disk drives comprise a plurality of real storageareas, wherein at least some of the plurality of real storage areas ofthe plurality of first disk drives constitutes a first logical volumeprior to the control device receiving a request for adding the seconddisk drive, each of the plurality of real storage areas comprises aplurality of management units of a predetermine size; and the controldevice is configured to: hold information indicating correspondencesbetween a plurality of virtual storage areas to be provided for the hostcomputer and the plurality of real storage areas assigned to theplurality of virtual storage areas in the first logical volume; receivea request for writing data to a first virtual storage area to which areal storage area is not assigned, assign a first real storage area,which is not assigned to a virtual storage area, of the plurality ofreal storage areas of the plurality of first disk drives, to the firstvirtual storage area; distributedly store the data requested to bewritten in the plurality of management units contained in the first realstorage area; create a second logical volume comprising the plurality ofreal storage areas containing a part of the plurality of managementunits of the second disk drive, and the plurality of management unitsthat are not contained in the first logical volume, are not assigned tothe plurality of virtual storage areas, and are of the plurality offirst disk drives; read the data stored in the plurality of managementunits of the plurality of first disk drives in response to receiving therequest for adding the second disk drive, and distributedly store theread data in the plurality of management units of the plurality of firstdisk drives and the second disk drive to relocate the read data only forthe plurality of management units contained in the first logical volume;receive a request for writing data to a second virtual storage area towhich a real storage area is not assigned, after receiving the requestfor adding the second disk drive, and before the relocation of the datahas been completed, assign a second real storage area, which is locatedin the second logical volume and not assigned to a virtual storage area,to the second virtual storage area.
 2. The storage system according toclaim 1, wherein: the control device is further configured to hold poolinformation for identifying a pool containing the plurality of realstorage areas which can be assigned to the plurality of virtual storageareas; the request for adding the second disk drive comprisesinformation indicating that the second disk drive is to be added to thepool; and the control device is further configured to carry out, upondetermining based on the pool information that the pool designated bythe request contains the plurality of real storage areas containing theplurality of management units of the plurality of first disk drives, therelocation of the data for the plurality of management units of theplurality of first disk drives.
 3. The storage system according to claim1, wherein: the control device is further configured to hold poolinformation for identifying a pool containing the plurality of realstorage areas which can be assigned to the plurality of virtual storageareas; the request for adding the second disk drive comprisesinformation indicating that the second disk drive is to be added to avirtual logical volume containing the plurality of virtual storageareas; and the control device is further configured to carry out, upondetermining based on the pool information that each of the plurality ofreal storage areas which can be assigned to the plurality of virtualstorage areas contained in the virtual logical volume designated by therequest contains each of the plurality of real storage areas containingthe plurality of management units of the plurality of first disk drives,the relocation of the data for the plurality of management units of theplurality of first disk drives.
 4. The storage system according to claim7, wherein the control device is configured to: hold pool informationfor identifying a pool containing the plurality of real storage areaswhich can be assigned to the plurality of virtual storage areas; andinhibit creating, upon determining based on the pool information thatthe plurality of real storage areas contained in the first logicalvolume cannot be assigned to the plurality of virtual storage areas, thesecond logical volume.
 5. A method of controlling a storage systemincluding a plurality of disk drives, and a control device forcontrolling the plurality of disk drives, the storage system is coupledto a host computer, the plurality of disk drives including a pluralityof first disk drives and one second disk drive, the plurality of diskdrives including a plurality of real storage areas, wherein theplurality of real storage areas of the plurality of first disk drivesconstitutes a first logical volume prior to the control device receivinga request for adding the second disk drive, each of the plurality ofreal storage areas including a plurality of management units of apredetermine size, the control device holding information indicatingcorrespondences between a plurality of virtual storage areas to beprovided for the host computer and the plurality of real storage areasassigned to the plurality of virtual storage areas in the first logicalvolume, the method comprising: receiving a request for writing data to afirst virtual storage area to which a real storage area is not assigned,and in response to the received request, assigning a first real storagearea, which is not assigned to a virtual storage area, of the pluralityof real storage areas of the plurality of first disk drives, to thefirst virtual storage area; distributedly storing the data requested tobe written in the plurality of management units contained in the firstreal storage area; creating a second logical volume after the size ofthe first logical volume has been changed, the second logical volumecomprising the plurality of real storage areas containing a part of theplurality of management units of the second disk drive, and theplurality of management units that are not contained in the firstlogical volume, are not assigned to the plurality of virtual storageareas, and are of the plurality of first disk drives; reading the datastored by the plurality of management units of the plurality of firstdisk drives in response to receiving a request for adding the seconddisk drive, and distributedly storing the read data in the plurality ofmanagement units of the plurality of first disk drives and the seconddisk drive to relocate the read data only for the plurality ofmanagement units contained in the first logical volume; and receiving arequest for writing data to a second virtual storage area, to which areal storage area is not assigned, after receiving the request foradding the second disk drive, and before the relocation of the data hasbeen completed, and assigning a second real storage area, which islocated in the second logical volume and not assigned to a virtualstorage area, to the second virtual storage area.
 6. The methodaccording to claim 5, wherein: the control device holds pool informationfor identifying a pool containing the plurality of real storage areaswhich can be assigned to the plurality of virtual storage areas; therequest for adding the second disk drive comprises informationindicating that the second disk drive is to be added to the pool; andthe reading is carried out upon determining based on the poolinformation that the pool designated by the request contains theplurality of real storage areas containing the plurality of managementunits of the plurality of first disk drives.
 7. The method according toclaim 5, wherein: the control device holds pool information foridentifying a pool containing the plurality of real storage areas whichcan be assigned to the plurality of virtual storage areas; the requestfor adding the second disk drive comprises information indicating thatthe second disk drive is to be added to a virtual logical volumecontaining the plurality of virtual storage areas; and the reading iscarried out upon determining based on the pool information that each ofthe plurality of real storage areas which can be assigned to theplurality of virtual storage areas contained in the virtual logicalvolume designated by the request contains each of the plurality of realstorage areas containing the plurality of management units of theplurality of first disk drives.
 8. The method according to claim 5,wherein: the control device holds information for identifying a poolcontaining the plurality of real storage areas which can be assigned tothe plurality of virtual storage areas; and the creating a secondlogical volume is not carried out upon determining based on the poolinformation that the plurality of real storage areas contained in thefirst logical volume cannot be assigned to the plurality of virtualstorage area.